package acciones;

import java.util.Vector;

import persistencia.AutorDAO;
import persistencia.EditorDAO;
import persistencia.PersonaDAO;
import persistencia.RevisorDAO;
import dominio.*;

public class ModificarDatos extends ComprobarSesion implements Constantes {

	private static final long serialVersionUID = 1L;
	private Persona persona;
	private String newNombre;
	private String newApellidos;
	private String newEmail;
	private String newAfiliacion;
	private String newPassword;
	private String newPalabras;

	public String execute() {
		try {
			persona =  checkSesion("persona");
			if (persona != null) {
				String rol = persona.getRol();
				if (rol.equalsIgnoreCase(AUTOR)) {					
					Autor autor = new Autor(persona.getDni(), newNombre, newApellidos, newAfiliacion, newEmail, newPassword, persona.getRol());
					cambiarObjeto("persona", autor);
					AutorDAO.update(autor);
					persona=autor;
					return AUTOR;
				} else if(rol.equalsIgnoreCase(REVISOR)){
					//Primero construir el vector de las palabras
					Revisor revisor = new Revisor(persona.getDni(), newNombre, newApellidos, newAfiliacion, newEmail, newPassword, persona.getRol(), newPalabras);
					cambiarObjeto("persona", revisor);
					RevisorDAO.update(revisor, newPalabras);
					persona=revisor;
					return REVISOR;
				} else{
					Editor editor = EditorDAO.newEditor(persona.getDni());
					editor.setAfiliacion(newAfiliacion); editor.setApellido(newApellidos); editor.setEmail(newEmail);
					editor.setNombre(newNombre); editor.setPassword(newPassword);
					cambiarObjeto("persona", editor);
					EditorDAO.update(editor);
					persona=editor;
					return EDITOR;
				}
			} else {
				return ERROR;
			}

		} catch (Exception e) {
			return ERROR;
		}
	}

	public Persona getPersona() {
		return persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	public String getNewNombre() {
		return newNombre;
	}

	public void setNewNombre(String newNombre) {
		this.newNombre = newNombre;
	}

	public String getNewApellidos() {
		return newApellidos;
	}

	public void setNewApellidos(String newApellidos) {
		this.newApellidos = newApellidos;
	}

	public String getNewEmail() {
		return newEmail;
	}

	public void setNewEmail(String newEmail) {
		this.newEmail = newEmail;
	}

	public String getNewAfiliacion() {
		return newAfiliacion;
	}

	public void setNewAfiliacion(String newAfiliacion) {
		this.newAfiliacion = newAfiliacion;
	}

	public String getNewPassword() {
		return newPassword;
	}

	public void setNewPassword(String newPassword) {
		this.newPassword = newPassword;
	}
	
	public String getNewPalabras() {
		return newPalabras;
	}

	public void setNewPalabras(String newPalabras) {
		this.newPalabras = newPalabras;
	}

}
